package com.example.educational.controller;

import com.example.educational.entity.VerCode.AesException;
import com.example.educational.service.AddressBookService;
import com.example.educational.service.CorporateService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


/**
 * 作用：完成企业微信中，通讯录同步回调验证的业务逻辑
 * 描述：技术难点：无
 */
@RestController
@RequestMapping("/addressBookService")
public class AddressBookController {


    @Autowired
    CorporateService corporateService;


    @Autowired
    AddressBookService addressBookService;

    /**
     * 作用：验证企业微信的回调服务
     * 描述：当程序放入服务器后，企业微信的内部应用API需要验证服务器中程序的认证，保证企业微信与本服务器中程序的企业微信的内部应用交互功能正常的使用
     */
    @ApiOperation(value = "验证企业微信通讯录的回调服务")
    @GetMapping("/callback")
    private String affirmFromWorkChart(@RequestParam("msg_signature") String sVerifyMsgSig, @RequestParam("timestamp") String sVerifyTimeStamp, @RequestParam("nonce") String sVerifyNonce, @RequestParam("echostr") String sVerifyEchoStr) throws AesException {
        // 1.验证企业信息回调
        String sEchoStr = corporateService.verifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr);
        // 2.提示输出
        System.out.println("通讯录回调验证成功~: " + sEchoStr);
        return sEchoStr;
    }

    /**
     * 作用：完成企业微信的回调服务
     * 描述：当程序放入服务器后，企业微信的通讯录回调API需要验证服务器中程序的认证，保证企业微信与本服务器中程序的企业微信通讯录的同步功能正常的使用
     */
    @ApiOperation(value = "完成企业微信通讯录的回调服务")
    @PostMapping("/callback")
    private String callbackFromWorkChart(@RequestParam("msg_signature") String sReqMsgSig, @RequestParam("timestamp") String sReqTimeStamp, @RequestParam("nonce") String sReqNonce, @RequestBody String sReqData) throws AesException {
        // 1.回复企业微信验证
        String msg = addressBookService.reqMsgURL(sReqMsgSig, sReqTimeStamp, sReqNonce, sReqData);
        // 2.提示输出
        System.out.println("通讯录完成回调，状态: " + msg);
        return msg;
    }
}
